#pragma once

#include "Message.h"
#include <vector>

   class System
        {
        public:
                virtual void Load(){};                // Allocate resources, load data from files, etc.
                virtual void Init(){};                // Initialize the system
                virtual void Update(float frameTime) = 0;        // Perform update logic (varies from system to system)
                virtual void ReceiveMessage(Message* msg){};
                virtual void Free(){};                // If necessary, free resources, etc.
                virtual void Unload(){};        // Unload - Shut down the system, unload resources, etc.
                virtual ~System(){};
        };

        typedef std::vector<System*>::iterator SysIt; // list of engine systems
